// 先变成一个大根堆，变成大根堆之后我们可以确定根节点就是最大值，这时候我们和堆中最后一个数据去做交换，然后将最后一个数据在堆中默认不看，在进行一次大根堆操作
// 这样根节点又变成了大根堆，我们可以在于倒数第二个数据进行交换，
import {heapInsert, swap ,heapify}  from './1.认识堆';
const heapSort = (arr: number[]) => {
    if(arr == null || arr.length < 2) return
    for(let i = 0; i < arr.length; i++){
        heapInsert(arr,i)
    }
    let heapSize = arr.length
    swap(arr,0,--heapSize)
    console.log(arr,heapSize)
    while(heapSize > 0){
        heapify(arr,0,heapSize)
        swap(arr,0,--heapSize)
    }
}
let arr = [4,31,5,21,4,6,2]
heapSort(arr)
console.log(arr)
export {
    heapSort
}